package pfc.aviloc.aplicacion.medicamentos;

import java.util.ArrayList;

import pfc.aviloc.R;
import pfc.aviloc.configuracion.ConfiguracionPreferenceActivity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;

public class MedicamentoEtiquetasActivity extends Activity {
	String etiqueta;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		Bundle bundle = this.getIntent().getExtras();
		etiqueta = bundle.getString("etiqueta");
		
		setContentView(R.layout.medicamentos_listview_xml);

		// Recuperamos la lista de medicamentos.
		ArrayList<Medicamentos> listaMedicamentos = null;
		listaMedicamentos = obtenerMedicamentosBD();
		// Mostramos cada una de las listas en las diferentes etiquetas.
		mostrarMedicamentos(listaMedicamentos);
	}
	
	
	private ArrayList<Medicamentos> obtenerMedicamentosBD(){
		MedicamentosBD mBD = new MedicamentosBD(this, this.getString(R.string.m_bd_nombre_base_datos), null, this.getResources().getInteger(R.integer.m_bd_version));
		ArrayList<Medicamentos> listaMedicamentos = mBD.recuperarBD();
		
		
		//Log.i("INFO","<<<<<<<<<>>>>>>>>>>>>>>>"+listaMedicamentos);
		return listaMedicamentos;
	}
	
	private void mostrarMedicamentos(final ArrayList<Medicamentos> listaMedicamentos){	
		ListView listViewMedicamentos = (ListView) findViewById(R.id.m_lista_medicamentos_id);
		TextView textViewFechaActualizacion = (TextView) findViewById(R.id.m_fecha_actualizacion_id);

		final ArrayList<Medicamentos> listaMedicamentosMostrarDesayuno = new ArrayList<Medicamentos>();
		final ArrayList<Medicamentos> listaMedicamentosMostrarComida = new ArrayList<Medicamentos>();
		final ArrayList<Medicamentos> listaMedicamentosMostrarMerienda = new ArrayList<Medicamentos>();
		final ArrayList<Medicamentos> listaMedicamentosMostrarCena = new ArrayList<Medicamentos>();
		final ArrayList<Medicamentos> listaMedicamentosMostrarDormir = new ArrayList<Medicamentos>();
		
		String horaDesayunoString = ConfiguracionPreferenceActivity.getHoraTomaDesayuno(this);
		int horaDesayuno = new Integer(horaDesayunoString.substring(0, horaDesayunoString.indexOf(":")));
		String horaComidaString = ConfiguracionPreferenceActivity.getHoraTomaComida(this);
		int horaComida = new Integer(horaComidaString.substring(0, horaComidaString.indexOf(":")));
		String horaMeriendaString = ConfiguracionPreferenceActivity.getHoraTomaMerienda(this);
		int horaMerienda = new Integer(horaMeriendaString.substring(0, horaMeriendaString.indexOf(":")));
		String horaCenaString = ConfiguracionPreferenceActivity.getHoraTomaCena(this);
		int horaCena = new Integer(horaCenaString.substring(0, horaCenaString.indexOf(":")));
		String horaDormirString = ConfiguracionPreferenceActivity.getHoraTomaAcostarse(this);
		int horaDormir = new Integer(horaDormirString.substring(0, horaDormirString.indexOf(":")));
		
		for (Medicamentos medicamento : listaMedicamentos) {
		
			if (medicamento.getFrecuencia().equalsIgnoreCase("1")){
				int horaToma =  new Integer(medicamento.getHoraToma());			
				if ( (horaToma> (horaDesayuno+1)) && (horaToma <(horaComida+1))) {
					listaMedicamentosMostrarComida.add(medicamento);
				} else if ( (horaToma> (horaComida+1)) && (horaToma <(horaMerienda+1))) {
					listaMedicamentosMostrarMerienda.add(medicamento);
				} else if ( (horaToma> (horaMerienda+1)) && (horaToma <(horaCena+1))) {
					listaMedicamentosMostrarCena.add(medicamento);
				} else if ( (horaToma> (horaCena+1)) && (horaToma <(horaDormir+1))) {
					listaMedicamentosMostrarDormir.add(medicamento);
				} else {
					listaMedicamentosMostrarDesayuno.add(medicamento);
				}
			} else if (medicamento.getFrecuencia().equalsIgnoreCase("2")){
				listaMedicamentosMostrarComida.add(medicamento);
				listaMedicamentosMostrarCena.add(medicamento);
			} else if (medicamento.getFrecuencia().equalsIgnoreCase("3")){
				listaMedicamentosMostrarDesayuno.add(medicamento);
				listaMedicamentosMostrarComida.add(medicamento);
				listaMedicamentosMostrarCena.add(medicamento);
			} else if (medicamento.getFrecuencia().equalsIgnoreCase("4")){
				listaMedicamentosMostrarDesayuno.add(medicamento);
				listaMedicamentosMostrarComida.add(medicamento);
				listaMedicamentosMostrarMerienda.add(medicamento);
				listaMedicamentosMostrarDormir.add(medicamento);
			} 			
		}
		MedicamentosArrayAdapter adapterMedicamentos = null;//new MedicamentosArrayAdapter(this, R.layout.medicamentos_lista_medicamentos_xml, listaMedicamentosMostrarDesayuno);
		if (etiqueta.equalsIgnoreCase(getString(R.string.titulo_etiqueta_desayuno))){
			if (!listaMedicamentosMostrarDesayuno.isEmpty()) {
				adapterMedicamentos = new MedicamentosArrayAdapter(this, R.layout.medicamentos_lista_medicamentos_xml, listaMedicamentosMostrarDesayuno);
		        listViewMedicamentos.setAdapter(adapterMedicamentos);
		        listViewMedicamentos.setOnItemClickListener(new OnItemClickListener() {
					public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
						Medicamentos medicamentoPulsado = listaMedicamentosMostrarDesayuno.get(position);

						Intent intent = new Intent();
						intent.setClass(MedicamentoEtiquetasActivity.this, MedicamentoDatosMedicamentoActivity.class);
						intent.putExtra("id_medicamento", medicamentoPulsado.getId());
						intent.putExtra("hora_toma", ConfiguracionPreferenceActivity.getHoraTomaDesayuno(MedicamentoEtiquetasActivity.this));
						startActivity(intent);
						finish();
					}
				});
			} else {				
				final String[] valores = new String[]{getString(R.string.m_no_hay_medicamentos)};
				ArrayAdapter adaptador = new ArrayAdapter(this, android.R.layout.simple_list_item_1, valores);
				listViewMedicamentos.setAdapter(adaptador);
			}
		} else if (etiqueta.equalsIgnoreCase(getString(R.string.titulo_etiqueta_comida))){
			if (!listaMedicamentosMostrarComida.isEmpty()) {
				adapterMedicamentos = new MedicamentosArrayAdapter(this, R.layout.medicamentos_lista_medicamentos_xml, listaMedicamentosMostrarComida);
		        listViewMedicamentos.setAdapter(adapterMedicamentos);
		        listViewMedicamentos.setOnItemClickListener(new OnItemClickListener() {
					public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
						Medicamentos medicamentoPulsado = listaMedicamentosMostrarComida.get(position);
					
						Intent intent = new Intent();
						intent.setClass(MedicamentoEtiquetasActivity.this, MedicamentoDatosMedicamentoActivity.class);
						intent.putExtra("id_medicamento", medicamentoPulsado.getId());
						intent.putExtra("hora_toma", ConfiguracionPreferenceActivity.getHoraTomaComida(MedicamentoEtiquetasActivity.this));
						startActivity(intent);
						finish();
					}
				});
			} else {				
				final String[] valores = new String[]{getString(R.string.m_no_hay_medicamentos)};
				ArrayAdapter adaptador = new ArrayAdapter(this, android.R.layout.simple_list_item_1, valores);
				listViewMedicamentos.setAdapter(adaptador);
			}
			
		} else if (etiqueta.equalsIgnoreCase(getString(R.string.titulo_etiqueta_merienda))){	      			
			if (!listaMedicamentosMostrarMerienda.isEmpty()) {
				adapterMedicamentos = new MedicamentosArrayAdapter(this, R.layout.medicamentos_lista_medicamentos_xml, listaMedicamentosMostrarMerienda);
		        listViewMedicamentos.setAdapter(adapterMedicamentos);
		        listViewMedicamentos.setOnItemClickListener(new OnItemClickListener() {
					public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
						Medicamentos medicamentoPulsado = listaMedicamentosMostrarMerienda.get(position);
						Log.i("INFO",">>>>>>>>>Pulsado>>>>>>>>>>"+medicamentoPulsado.getId());
						
						Intent intent = new Intent();
						intent.setClass(MedicamentoEtiquetasActivity.this, MedicamentoDatosMedicamentoActivity.class);
						intent.putExtra("id_medicamento", medicamentoPulsado.getId());
						intent.putExtra("hora_toma", ConfiguracionPreferenceActivity.getHoraTomaMerienda(MedicamentoEtiquetasActivity.this));
						startActivity(intent);
						finish();
					}
				});
			} else {				
				final String[] valores = new String[]{getString(R.string.m_no_hay_medicamentos)};
				ArrayAdapter adaptador = new ArrayAdapter(this, android.R.layout.simple_list_item_1, valores);
				listViewMedicamentos.setAdapter(adaptador);
			}
		} else if (etiqueta.equalsIgnoreCase(getString(R.string.titulo_etiqueta_cena))){			
			if (!listaMedicamentosMostrarCena.isEmpty()) {
				adapterMedicamentos = new MedicamentosArrayAdapter(this, R.layout.medicamentos_lista_medicamentos_xml, listaMedicamentosMostrarCena);
		        listViewMedicamentos.setAdapter(adapterMedicamentos);
		        listViewMedicamentos.setOnItemClickListener(new OnItemClickListener() {
					public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
						Medicamentos medicamentoPulsado = listaMedicamentosMostrarCena.get(position);
						Log.i("INFO",">>>>>>>>>Pulsado>>>>>>>>>>"+medicamentoPulsado.getId());
						
						Intent intent = new Intent();
						intent.setClass(MedicamentoEtiquetasActivity.this, MedicamentoDatosMedicamentoActivity.class);
						intent.putExtra("id_medicamento", medicamentoPulsado.getId());
						intent.putExtra("hora_toma", ConfiguracionPreferenceActivity.getHoraTomaCena(MedicamentoEtiquetasActivity.this));
						startActivity(intent);
						finish();
					}
				});
			} else {				
				final String[] valores = new String[]{getString(R.string.m_no_hay_medicamentos)};
				ArrayAdapter adaptador = new ArrayAdapter(this, android.R.layout.simple_list_item_1, valores);
				listViewMedicamentos.setAdapter(adaptador);
			}
		} else if (etiqueta.equalsIgnoreCase(getString(R.string.titulo_etiqueta_dormir))){
			adapterMedicamentos = new MedicamentosArrayAdapter(this, R.layout.medicamentos_lista_medicamentos_xml, listaMedicamentosMostrarDormir);
			if (!listaMedicamentosMostrarDormir.isEmpty()) {
				adapterMedicamentos = new MedicamentosArrayAdapter(this, R.layout.medicamentos_lista_medicamentos_xml, listaMedicamentosMostrarDormir);
		        listViewMedicamentos.setAdapter(adapterMedicamentos);
		        listViewMedicamentos.setOnItemClickListener(new OnItemClickListener() {
					public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
						Medicamentos medicamentoPulsado = listaMedicamentosMostrarDormir.get(position);
						Log.i("INFO",">>>>>>>>>Pulsado>>>>>>>>>>"+medicamentoPulsado.getId());
						
						Intent intent = new Intent();
						intent.setClass(MedicamentoEtiquetasActivity.this, MedicamentoDatosMedicamentoActivity.class);
						intent.putExtra("id_medicamento", medicamentoPulsado.getId());
						intent.putExtra("hora_toma", ConfiguracionPreferenceActivity.getHoraTomaAcostarse(MedicamentoEtiquetasActivity.this));
						startActivity(intent);
						finish();
					}
				});
			} else {				
				final String[] valores = new String[]{getString(R.string.m_no_hay_medicamentos)};
				ArrayAdapter adaptador = new ArrayAdapter(this, android.R.layout.simple_list_item_1, valores);
				listViewMedicamentos.setAdapter(adaptador);
			}
		}


	}
}
